<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>02.promise的简单用法</title>
  </head>
  <body>
    <script>
      /*
        
        Promise  解决回调地狱的
    new Promise(function(resolve,reject){
           resolve() 成功
           reject()  失败
   })

promise对象 
   then(value=>{
       value  接收上一次的成功数据 
   },reson=>{
       reson  接收上一次的失败数据
   })

   catch(reson => {
        reson 接收上一次的失败数据
   })

promise  无论调用 then  还是  catch   都会返回一个新的promise对象
then().then().then().then().then()。。。。。

成功：resolve()  无返回值  return Promise.resolve()
失败: reject()   throw new Error()   Promise.reject()

        
        */
      /**
       *   resolve函数: 成功
       *   reject函数： 失败
       *
       * 成功：  return
       *        Promise.resolve
       *        无返回值
       * 失败:  Promise.reject
       *       抛出异常
       */
      console.dir(Promise);
      const p = new Promise(function (resolve, reject) {
        resolve("我成功了....");
        // reject("我失败了....")
      })
        .then(
          (value) => {
            console.log("成功的回调....", value);
          },
          (reason) => {
            console.log("失败的回调....", reason);
          }
        )
        .then((value) => {
          console.log("成功了，xxxx");
          return "有返回值的成功...";
        })
        .then((value) => {
          console.log("成功了，", value);
          throw new Error("抛出了异常");
        })
        .catch((e) => {
          console.log(e);
           return Promise.resolve("状态又变成成功了...")
        }).then(value => {
            console.log(value);
            return Promise.reject("状态又变成失败了...")

        }).catch(err => {
             console.log(err);
            
        }).finally(() => {
             console.log("无论成功失败都执行");
        })
      // console.dir(p);
    </script>
  </body>
</html>
